package com.mallcai.bigdata.ladon.service.report;

import com.mallcai.bigdata.ladon.dpl.entity.report.Group;
import com.mallcai.bigdata.ladon.vo.Pair;
import com.mallcai.bigdata.ladon.vo.system.TreeNodeVo;

import java.util.List;
import java.util.Map;

/**
 * Created by oneape<oneape15@163.com>
 * Created 2019-07-09 11:09.
 * Modify:
 */
public interface IGroupService {

    /**
     * 添加
     *
     * @param group Group
     * @return int
     */
    public int addGroup(Group group);

    /**
     * 修改报表组
     *
     * @param group Group
     * @return int
     */
    public int editGroup(Group group);

    /**
     * 删除报表组
     *
     * @param group Group
     * @return int
     */
    public int delGroup(Group group);

    /**
     * 根据Id获取报表Id
     *
     * @param groupId Long
     * @return Group
     */
    public Group getById(Long groupId);

    /**
     * 根据条件查询报表组
     *
     * @param params Map
     * @return List
     */
    public List<Group> getByParams(Map<String, Object> params);

    /**
     * 查询子节点
     *
     * @param parentIds List
     * @return List
     */
    public List<Group> getChildren(List<Long> parentIds);

    /**
     * 获取树型节点列表
     *
     * @return List<TreeNodeVo>
     */
    public List<TreeNodeVo> getTreeNodes();

    /**
     * 对列表以level进行分组
     *
     * @param groups List
     * @return map
     */
    public Pair<Integer, Map<Integer, List<Group>>> splitGroup(List<Group> groups);

    /**
     * 获取简单的报表组信息
     *
     * @return List
     */
    List<Group> getAllSimpleGroup();
}
